package JavaShengSai;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

/**
 * 13. Fibonacci 集合
 * https://www.lanqiao.cn/problems/2362/learning/?page=1&first_category_id=1&tags=2020,%E7%9C%81%E8%B5%9B&tag_relation=intersection&sort=pass_rate&asc=0
 */
public class Main18 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 枚举
        // 将所有的数据放到一个可以快速知道对应的数据是否已经存在的集合中，那么这里使用链表
        ArrayList<Integer> hash = new ArrayList<>();
        int[] arr = {1,2,3,5,8};
        for(int i = 0;i < arr.length;i++) {
            hash.add(arr[i]);
        }
        int index = 0;
        while(true) {
            int x = hash.get(index);
            int a = 3 * x + 2;
            if(!hash.contains(a)) {
                hash.add(a);
            }
            int b = 5 * x + 3;
            if(!hash.contains(b)) {
                hash.add(b);
            }
            int c = 8 * x + 5;
            if(!hash.contains(c)) {
                hash.add(c);
            }
            // 排序
            Collections.sort(hash);
            if(index == 2019) {
                System.out.println(hash.get(2019));
                break;
            }
            index++;
        }
        scan.close();
    }
    public static void main1(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 枚举
        // 将所有的数据放到一个可以快速知道对应的数据是否已经存在的集合中，那么这里使用链表
        ArrayList<Integer> hash = new ArrayList<>();
        int[] arr = {1,2,3,5,8};
        for(int i = 0;i < arr.length;i++) {
            hash.add(arr[i]);
        }

        for(int i = 0;i <= 2020;i++) {
            int x = hash.get(i);
            int a = 3 * x + 2;
            if(!hash.contains(a)) {
                hash.add(a);
            }
            int b = 5 * x + 3;
            if(!hash.contains(b)) {
                hash.add(b);
            }
            int c = 8 * x + 5;
            if(!hash.contains(c)) {
                hash.add(c);
            }
            // 排序
            Collections.sort(hash);
        }
        System.out.println(hash.get(2019));
        scan.close();
    }
}
